/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package edu.upn.sigemfi.plt.be;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

/**
 *
 * @author Gerard
 */
@Entity
@Table(name = "PLT_DETALLE_SEGURO")
@NamedQueries({@NamedQuery(name = "DetalleSeguro.findAll", query = "SELECT d FROM DetalleSeguro d"), @NamedQuery(name = "DetalleSeguro.findByFidPltCliente", query = "SELECT d FROM DetalleSeguro d WHERE d.detalleSeguroPK.fidPltCliente = :fidPltCliente"), @NamedQuery(name = "DetalleSeguro.findByFidPltMicroseguro", query = "SELECT d FROM DetalleSeguro d WHERE d.detalleSeguroPK.fidPltMicroseguro = :fidPltMicroseguro"), @NamedQuery(name = "DetalleSeguro.findByPorcentajeCobertura", query = "SELECT d FROM DetalleSeguro d WHERE d.porcentajeCobertura = :porcentajeCobertura"), @NamedQuery(name = "DetalleSeguro.findByMontoRealCobertura", query = "SELECT d FROM DetalleSeguro d WHERE d.montoRealCobertura = :montoRealCobertura"), @NamedQuery(name = "DetalleSeguro.findByEstado", query = "SELECT d FROM DetalleSeguro d WHERE d.estado = :estado"), @NamedQuery(name = "DetalleSeguro.findByParentesco", query = "SELECT d FROM DetalleSeguro d WHERE d.parentesco = :parentesco")})
public class DetalleSeguro implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected DetalleSeguroPK detalleSeguroPK;
    @Column(name = "PORCENTAJE_COBERTURA", precision = 53)
    private Double porcentajeCobertura;
    @Column(name = "MONTO_REAL_COBERTURA", precision = 53)
    private Double montoRealCobertura;
    @Column(name = "ESTADO")
    private Short estado;
    @Column(name = "PARENTESCO", length = 80)
    private String parentesco;
    @JoinColumn(name = "FID_PLT_CLIENTE", referencedColumnName = "ID_CLIENTE", nullable = false, insertable = false, updatable = false)
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Cliente cliente;
    @JoinColumn(name = "FID_PLT_MICROSEGURO", referencedColumnName = "ID_MICROSEGURO", nullable = false, insertable = false, updatable = false)
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    private Microseguro microseguro;

    public DetalleSeguro() {
    }

    public DetalleSeguro(DetalleSeguroPK detalleSeguroPK) {
        this.detalleSeguroPK = detalleSeguroPK;
    }

    public DetalleSeguro(long fidPltCliente, long fidPltMicroseguro) {
        this.detalleSeguroPK = new DetalleSeguroPK(fidPltCliente, fidPltMicroseguro);
    }

    public DetalleSeguroPK getDetalleSeguroPK() {
        return detalleSeguroPK;
    }

    public void setDetalleSeguroPK(DetalleSeguroPK detalleSeguroPK) {
        this.detalleSeguroPK = detalleSeguroPK;
    }

    public Double getPorcentajeCobertura() {
        return porcentajeCobertura;
    }

    public void setPorcentajeCobertura(Double porcentajeCobertura) {
        this.porcentajeCobertura = porcentajeCobertura;
    }

    public Double getMontoRealCobertura() {
        return montoRealCobertura;
    }

    public void setMontoRealCobertura(Double montoRealCobertura) {
        this.montoRealCobertura = montoRealCobertura;
    }

    public Short getEstado() {
        return estado;
    }

    public void setEstado(Short estado) {
        this.estado = estado;
    }

    public String getParentesco() {
        return parentesco;
    }

    public void setParentesco(String parentesco) {
        this.parentesco = parentesco;
    }

    public Cliente getCliente() {
        return cliente;
    }

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }

    public Microseguro getMicroseguro() {
        return microseguro;
    }

    public void setMicroseguro(Microseguro microseguro) {
        this.microseguro = microseguro;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (detalleSeguroPK != null ? detalleSeguroPK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof DetalleSeguro)) {
            return false;
        }
        DetalleSeguro other = (DetalleSeguro) object;
        if ((this.detalleSeguroPK == null && other.detalleSeguroPK != null) || (this.detalleSeguroPK != null && !this.detalleSeguroPK.equals(other.detalleSeguroPK))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "edu.upn.sigemfi.plt.be.DetalleSeguro[detalleSeguroPK=" + detalleSeguroPK + "]";
    }

}
